/*
 * algoritmoConstr.h
 *
 *  Created on: Nov 11, 2012
 *      Author: ra083681
 */

#ifndef ALGORITMOCONSTR_H_
#define ALGORITMOCONSTR_H_

#include <lemon/list_graph.h>

#include "../steiner_constrained_path_solver.hpp"

using namespace lemon;
using namespace std;

class algoritmoConstr {
public:
	algoritmoConstr();
	virtual ~algoritmoConstr();
	double construirSolucao(std::vector<ListGraph::Node> &current_solution);

private:
	// Custo atual da solucao
	double custo_total;

	// Para cada vertice j, colorido[j] == true se j esta na solucao, e false do contrario
	std::vector<bool> colorido;

	// Retorna o numero de terminais visitados
	unsigned vizinhoMaisProximo(std::vector<ListGraph::Node> &current_solution, bool ultimo_no);

	// Retorna um no extremo
	ListGraph::Node encontraExtremo();
};

#endif /* ALGORITMOCONSTR_H_ */
